package com.itheima.manager;

import com.itheima.domain.PmsProductCategory;
import com.itheima.service.db.PmsProductCategoryService;
import com.itheima.util.R;
import com.itheima.vo.PageBeanVo;
import com.itheima.vo.PmsProductCategoryVo;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;

import java.lang.reflect.Array;
import java.util.List;

@Component
public class PmsProductCategoryManager {

    @DubboReference
    PmsProductCategoryService pmsProductCategoryService;

    /**
     * 查询所有分类及其子分类
     * @return
     */
    public R findAll() {
        List<PmsProductCategoryVo> pmsProductCategoryVoList = pmsProductCategoryService.findAll();
        return R.success(pmsProductCategoryVoList);
    }

    /**
     * 分页查询商品分类
     *
     * @param parentId
     * @param pageNum
     * @param pageSize
     * @return
     */
    public R findCategoryByPage(Integer parentId, Integer pageNum, Integer pageSize) {
        PageBeanVo pageBeanVo = pmsProductCategoryService.findCategoryByPage(parentId, pageNum, pageSize);
        return R.success(pageBeanVo);
    }

    /**
     * 添加商品分类
     *
     * @param productCategoryParam
     * @return
     */
    public R addCategory(PmsProductCategory productCategoryParam) {
        Boolean res = pmsProductCategoryService.addCategory(productCategoryParam);
        return res ? R.success("添加商品分类成功") : R.error(500, "该分类名称已存在!");
    }

    /**
     * 删除商品分类
     *
     * @param id
     * @return
     */
    public R deleteCategory(Integer id) {
        Boolean res = pmsProductCategoryService.deleteCategory(id);
        return res?R.success("删除商品分类成功"):R.error(500,"删除失败,该分类存在子分类");
    }

    /**
     * 修改导航栏显示状态
     *
     * @param ids
     * @param navStatus
     * @return
     */
    public R updateNavStatus(List<Integer> ids, Integer navStatus) {
        pmsProductCategoryService.updateNavStatus(ids, navStatus);
        return R.success("修改导航栏显示状态成功");
    }

    /**
     * 修改显示状态
     *
     * @param ids
     * @param showStatus
     * @return
     */
    public R updateShowStatus(List<Integer> ids, Integer showStatus) {
        pmsProductCategoryService.updateShowStatus(ids, showStatus);
        return R.success("修改显示状态成功");
    }


    /**
     * 修改商品分类信息
     * @param productCategoryParam
     * @return
     */
    public R updateCategory(PmsProductCategory productCategoryParam) {

        Boolean res = pmsProductCategoryService.updateCategory(productCategoryParam);
        return res ? R.success("修改商品分类信息成功") : R.error(500, "修改失败,该分类名称已存在!");
    }

    /**
     * 根据id获取商品分类
     * @param id
     * @return
     */
    public R findCategoryById(Long id) {
        PmsProductCategory pmsProductCategory = pmsProductCategoryService.findCategoryById(id);
        return R.success(pmsProductCategory);
    }
}
